import java.util.HashMap;

/**
 * @version v1.0
 * @description:
 * @author: admin
 * @date: 2022/12/9 9:29
 * @copyright: 博为峰
 */
public class Demo01 {
    public static void main(String[] args) {
        //位运算符 & | ^ ~(取反) <<(左移) >>(右移) >>>(无符号右移)
        System.out.println(6 & 3);
        /*
            00000000-00000000-00000110
            00000000-00000000-00000011  &
          -----------------------------------
            00000000-00000000-00000010
        */
        System.out.println(6 ^ 3 ^ 3);//异或同一个数两次还是原来的数
        /*
            00000000-00000000-00000110
            00000000-00000000-00000011  ^
          -----------------------------------
            00000000-00000000-00000101
            00000000-00000000-00000011  ^
          -----------------------------------
            00000000-00000000-00000110
        */
        System.out.println(~6); //-7
        /*
            00000000-00000000-00000110  ~
          -----------------------------------
            11111111-11111111-11111001  + 1
            00000000-00000000-00000001
        */

        /*
           负数进制=~正数进制+1
              -6 = ~6+1
        */

//        System.out.println(Integer.MAX_VALUE);//2147483647
//        System.out.println(Integer.MIN_VALUE);//-2147483648

        System.out.println(6 << 2);//左移几位就是该数乘以2的几次方 6 * 2的2次方
        /*
            00000000-00000000-00000110
          00000000-00000000-00000110
        */
        System.out.println(6 >> 2);//右移几位就是该数除以2的几次方 6 / 2的2次方
        /*
            对于高位的空位，原来是什么数就用此数补
            00000000-00000000-00000110
              00000000-00000000-00000110
        */

        System.out.println(6 >>> 2);//右移几位就是该数除以2的几次方 6 / 2的2次方
        //对于高位的空位，都用0补


        //java中二进制最(左边)高位是符号位1(负数)0(正数)

        new HashMap<String,String>();

    }
}
